/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.io.IOException;
import java.io.OutputStream;
import static java.lang.System.out;
import java.net.URL;
import java.sql.Connection;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.ConnectionFactory;
import model.beans.Cliente;
import model.beans.Conserto;
import model.beans.Criptografa;
import model.beans.Pedido;
import model.beans.Produto;
import model.beans.TipoProduto;
import model.beans.Usuario;
import model.dao.UsuarioDAO;
import model.negocio.ClienteNegocio;
import model.negocio.ConsertoNegocio;
import model.negocio.PedidoNegocio;
import model.negocio.ProdutoNegocio;
import model.negocio.TipoProdutoNegocio;
import model.negocio.UsuarioNegocio;
import net.sf.jasperreports.engine.JasperRunManager;
import org.eclipse.jdt.core.compiler.CharOperation;

/**
 *
 * @author Juliane Chaerki
 */
@WebServlet(name = "Controladora", urlPatterns = {"/Controladora"})
public class Controladora extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, Exception {
        
        String action = request.getParameter("action");
        
        //Login
        if(action.equals("Login")){
            try {
                Criptografa criptografa = new Criptografa();  
            
                String login = request.getParameter("login");
                String senha = criptografa.criptografa(request.getParameter("senha"));
                //String senha = request.getParameter("senha");
                String local = "/index.jsp";
            
                HttpSession session = request.getSession();
                RequestDispatcher rd;
            
                try {
                    UsuarioDAO dao = new UsuarioDAO();
                    Usuario usuario = new Usuario();
                    usuario = dao.ValidaLogin(login, senha);
                    int tipoUsuario;
                
                    if(usuario.getidUsuario()!= 0){
                        session.setAttribute("idUsuario",usuario.getidUsuario());
                        session.setAttribute("nome", usuario.getNome());
                        session.setAttribute("matricula", usuario.getMatricula());
                        session.setAttribute("tipo", usuario.getTipo());
                        session.setAttribute("email", usuario.getEmail());
                        session.setAttribute("login", login);
                        session.setAttribute("senha", senha);

                        tipoUsuario = usuario.getTipo();
                        PedidoNegocio negocio = new PedidoNegocio();
                        
                        if(tipoUsuario == 1) {
                            //gerente
                            local = "/index_admin.jsp";
                                        
                            List<Integer> lista = negocio.montaLista();
                            request.setAttribute("atraso", lista.get(0));
                            request.setAttribute("aberto", lista.get(1));
                            request.setAttribute("abertoHoje", lista.get(2));
                            request.setAttribute("efetivado", lista.get(3));
                            
                            Date dataAtual = new Date();
                            request.setAttribute("dataAtual", dataAtual);
            
                        }else{
                            //atendente
                            local = "/index_logado.jsp";
                            
                            List<Pedido> lista = negocio.listar(null);
                            request.setAttribute("listaPedido", lista);
                        }                    
                    }else{
                        session.invalidate();
                        request.setAttribute("msg", "Login ou Senha inválidos! Tente novamente.");
                    }
                    rd = getServletContext().getRequestDispatcher(local);
                    rd.forward(request, response);                
                } catch (Exception ex) {
                    Logger.getLogger(Controladora.class.getName()).log(Level.SEVERE, null, ex);
                }
            } finally {            
                out.close();
            }
        }
        
        if(action.equals("Logout")){
            HttpSession session = request.getSession();
            session.invalidate();
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/index.jsp");
            rd.forward(request, response);    
        }
    
        
        //Cadastrar Usuário
        if(action.equals("CadastrarUsuario")){
            int id = Integer.parseInt(request.getParameter("id"));
             
            Usuario usuario = new Usuario();
            UsuarioNegocio negocio = new UsuarioNegocio();
            Criptografa criptografa = new Criptografa();  
			
            usuario.setNome(request.getParameter("nome"));
            usuario.setMatricula(request.getParameter("matricula"));
            usuario.setTipo(Integer.parseInt(request.getParameter("tipo")));
            usuario.setEmail(request.getParameter("email"));
            usuario.setLogin(request.getParameter("login"));
            
            if(id == 0){
                usuario.setSenha(criptografa.criptografa(request.getParameter("senha")));
            
                List<Object> listaValida = negocio.validaDados(usuario);
                boolean valida = (Boolean)listaValida.get(0);
                if(!valida){
                    request.setAttribute("msg", listaValida.get(1));
                }else{
                    try{
                        negocio.salvar(usuario);
                        request.setAttribute("msg", "Usuário inserido com sucesso!");
                    }catch(Exception ex){
                        request.setAttribute("msg", "Ocorreu algum erro no sistema, se o erro persistir entre em contato com o administrador!");                    
                    }
                }
            }else{
                try{
                    usuario.setidUsuario(id);
                    negocio.alterar(usuario);
                    request.setAttribute("msg", "Usuário alterado com sucesso!");
                }catch(Exception ex){
                    request.setAttribute("msg", "Ocorreu algum erro no sistema, se o erro persistir entre em contato com o administrador!");                    
                }    
            }
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/usuario_new.jsp");
            rd.forward(request, response);
        }
        
        //Consulta Usuario
        if(action.equals("ConsultaUsuario")){
            String strBusca = request.getParameter("busca");
            
            UsuarioNegocio negocio = new UsuarioNegocio();
            List<Usuario> lista = negocio.listar(strBusca);
            request.setAttribute("listaUsuario", lista);
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/usuario_view.jsp");
            rd.forward(request, response);
        }
        
        //Excluir Usuario
        if(action.equals("ExcluirUsuario")){
            UsuarioNegocio negocio = new UsuarioNegocio();
            negocio.deletar(Integer.parseInt(request.getParameter("id")));
            request.setAttribute("msg", "Usuário excluído com sucesso!");
            
            List<Usuario> lista = negocio.listar(null);
            request.setAttribute("listaUsuario", lista);
            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/usuario_new.jsp");
            rd.forward(request, response);    
        }
        
        //Editar usuario
        if(action.equals("EditarUsuario")){
            int id = Integer.parseInt(request.getParameter("id"));
            Usuario usuario = new Usuario();
            UsuarioNegocio negocio = new UsuarioNegocio();
            usuario = negocio.buscaPorCodigo(id);
           
            request.setAttribute("usuarioAlt", usuario);            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/usuario_new.jsp");
            rd.forward(request, response);         
        }
        
        //Cadastrar Cliente
        if(action.equals("CadastrarCliente")){
            String idS= request.getParameter("id");
            int id;
            if(idS.equals("")){
                id = 0;
            }else{
                id = Integer.parseInt(idS);
            }
            
            String data = request.getParameter("dataNasc");
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");  
            Date dataNasc = (Date)formatter.parse(data); 
            
            Cliente cliente = new Cliente();
            ClienteNegocio negocio = new ClienteNegocio();
            
            
            cliente.setDataNasc(dataNasc);
            
            cliente.setNome(request.getParameter("nome"));
            cliente.setSexo(request.getParameter("sexo"));
            cliente.setCpf(request.getParameter("cpf"));
            cliente.setEndereco(request.getParameter("endereco"));
            cliente.setNumero(Integer.parseInt(request.getParameter("numero")));
            cliente.setComplemento(request.getParameter("complemento"));
            cliente.setBairro(request.getParameter("bairro"));
            cliente.setCep(request.getParameter("cep"));
            cliente.setCidade(request.getParameter("cidade"));
            cliente.setEstado(request.getParameter("estado"));
            cliente.setTelefone(request.getParameter("telefone"));
            cliente.setEmail(request.getParameter("email"));
            
            if(id == 0){
                List<Object> listaValida = negocio.validaDados(cliente);
                boolean valida = (Boolean)listaValida.get(0);
                if(!valida){
                    request.setAttribute("msg", listaValida.get(1));
                }else{
                    try{
                        negocio.salvar(cliente);
                        request.setAttribute("msg", "Cliente inserido com sucesso!");
                    }catch(Exception ex){
                        request.setAttribute("msg", "Ocorreu algum erro no sistema, se o erro persistir entre em contato com o administrador!");                    
                    }
                }
            }else{
                try{
                    cliente.setIdCliente(id);
                    negocio.alterar(cliente);
                    request.setAttribute("msg", "Cliente alterado com sucesso!");
                }catch(Exception ex){
                    request.setAttribute("msg", "Ocorreu algum erro no sistema, se o erro persistir entre em contato com o administrador!");                    
                }    
            }
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/cliente_new.jsp");
            rd.forward(request, response);
        }
        
        //Consultar Cliente
        if(action.equals("ConsultarCliente")){
            String strBusca = request.getParameter("busca");
            
            ClienteNegocio negocio = new ClienteNegocio();
            List<Cliente> lista = negocio.listar(strBusca);
            request.setAttribute("listaCliente", lista);
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/cliente_view.jsp");
            rd.forward(request, response);
        }
        
        //Excluir Cliente
        if(action.equals("ExcluirCliente")){
            ClienteNegocio negocio = new ClienteNegocio();
            negocio.deletar(Integer.parseInt(request.getParameter("id")));
            request.setAttribute("msg", "Cliente excluído com sucesso!");
            
            List<Cliente> lista = negocio.listar(null);
            request.setAttribute("listaCliente", lista);
            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/cliente_new.jsp");
            rd.forward(request, response);    
        }
        
        //Editar cliente
        if(action.equals("EditarCliente")){
            int id = Integer.parseInt(request.getParameter("id"));
            Cliente cliente = new Cliente();
            ClienteNegocio negocio = new ClienteNegocio();
            cliente = negocio.buscaId(id);
           
            request.setAttribute("clienteAlt", cliente);            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/cliente_new.jsp");
            rd.forward(request, response);         
        }
        
        //Ver Mais Cliente
         if(action.equals("VerMaisCliente")){
            int id = Integer.parseInt(request.getParameter("id"));
            Cliente cliente = new Cliente();
            ClienteNegocio negocio = new ClienteNegocio();
            cliente = negocio.buscaId(id);
           
            request.setAttribute("cliente", cliente);            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/cliente_more.jsp");
            rd.forward(request, response);         
        }
        
         //Cadastrar Pedido
        if(action.equals("CadastrarPedido")){
            String idS= request.getParameter("id");
            int id;
            if(idS.equals("")){
                id = 0;
            }else{
                id = Integer.parseInt(idS);
            }
           
            Cliente cliente = new Cliente();
            Produto produto = new Produto();
            TipoProduto tipoProduto = new TipoProduto();
            Pedido pedido = new Pedido();
            
            ClienteNegocio negocioC = new ClienteNegocio();
            ProdutoNegocio negocioP = new ProdutoNegocio();
            TipoProdutoNegocio negocioTp = new TipoProdutoNegocio();
            PedidoNegocio negocioPed = new PedidoNegocio();
            
            int idCliente = Integer.parseInt(request.getParameter("cliente"));
            //cliente.setIdCliente(idCliente);
            cliente = negocioC.buscaCombo(idCliente);
            
            int idTipoProduto = Integer.parseInt(request.getParameter("tipoProduto"));
            //tipoProduto.setIdTipoProduto(idTipoProduto);
            tipoProduto = negocioTp.buscarComboId(idTipoProduto);
            
            produto.setNome(request.getParameter("nome"));
            produto.setTipoProduto(tipoProduto);
            produto.setModelo(request.getParameter("modelo"));
            produto.setFabricante(request.getParameter("fabricante"));
            
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            
            //Date dataE = new Date();
            String dataEn = request.getParameter("dataEntrada");
            Date dataEntrada = (Date)formatter.parse(dataEn);
            
            String dataEP = request.getParameter("dataEntregaPrev");
            Date dataEntregaPrev = (Date)formatter.parse(dataEP);
            
            pedido.setCliente(cliente);
            pedido.setProduto(produto);
            pedido.setProblema(request.getParameter("problema"));
            pedido.setDataEntrada(dataEntrada);
            pedido.setDataEntregaPrev(dataEntregaPrev);
            String v = request.getParameter("valor");
            String valor = v.replace("R$", "");
            valor = valor.replace(",", ".");
            pedido.setValor(Double.parseDouble(valor));
            
            if(id == 0){
                List<Object> listaValida = negocioPed.validaDados(pedido);
                boolean valida = (Boolean)listaValida.get(0);
                if(!valida){
                    request.setAttribute("msg", listaValida.get(1));
                }else{
                    try{
                        int idProduto = negocioP.salvar(produto);
                        produto.setIdProduto(idProduto);
                        int idPedido = negocioPed.salvar(pedido);
                        request.setAttribute("msg", "Pedido " + idPedido + " realizado com sucesso!");
                    }catch(Exception ex){
                        request.setAttribute("msg", "Ocorreu algum erro no sistema, se o erro persistir entre em contato com o administrador!");                    
                    }
                }
            }else{
                try{
                    int idProduto = Integer.parseInt(request.getParameter("idProduto"));
                    produto.setIdProduto(idProduto);
                    pedido.setIdPedido(id);
                    negocioP.alterar(produto);
                    negocioPed.alterar(pedido);
                    request.setAttribute("msg", "Pedido alterado com sucesso!");
                }catch(Exception ex){
                    request.setAttribute("msg", "Ocorreu algum erro no sistema, se o erro persistir entre em contato com o administrador!");                    
                }    
            }
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_new.jsp");
            rd.forward(request, response);
        }
        
        //Consultar Pedido
        if(action.equals("ConsultarPedido")){
            String strBusca = request.getParameter("busca");
            String local = request.getParameter("local");
            
            PedidoNegocio negocio = new PedidoNegocio();
            List<Pedido> lista = negocio.listar(strBusca);
            request.setAttribute("listaPedido", lista);
            
            Date dataAtual = new Date();
            request.setAttribute("dataAtual", dataAtual);
            
            if(local != null){
                RequestDispatcher rd = getServletContext().getRequestDispatcher(local);
                rd.forward(request, response);
            }else{
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_view.jsp");
                rd.forward(request, response);
            }
        }
       
       //Consulta por Data
       if(action.equals("ConsultarPedidoData")){         
            String data_i = request.getParameter("data_i");
            String data_f = request.getParameter("data_f");
            
            if(data_i.equals("") || data_f.equals("")){
                request.setAttribute("msg", "Preencha corretamente data inicial e data final!");
            }else{
                try{
                    DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
                    Date dataI = (Date)formatter.parse(data_i);
                    Date dataF = (Date)formatter.parse(data_f);
                    
                    PedidoNegocio negocio = new PedidoNegocio();
                    List<Pedido> lista = negocio.listarData(dataI,dataF);
                    request.setAttribute("listaPedido", lista);
                }catch(Exception ex){
                      request.setAttribute("msg", "Ocorreu algum erro no sistema, se o erro persistir entre em contato com o administrador!");                    
                }
            }
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_view.jsp");
            rd.forward(request, response);
        }
        
         //Editar Pedido
         if(action.equals("EditarPedido")){
            int id = Integer.parseInt(request.getParameter("id"));
            Pedido pedido = new Pedido();
            PedidoNegocio negocioPed = new PedidoNegocio();
            pedido = negocioPed.buscaId(id);           
            request.setAttribute("pedidoAlt", pedido); 
            
            TipoProdutoNegocio negocio = new TipoProdutoNegocio();
            List<TipoProduto> lista = negocio.listar();
            request.setAttribute("listaTipoProduto", lista);
            
            ClienteNegocio negocioc = new ClienteNegocio();
            List<Cliente> listac = negocioc.listarCombo();
            request.setAttribute("listaCliente", listac);
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_new.jsp");
            rd.forward(request, response);         
        }
         
         //Efetivar Pedido 
         if(action.equals("EfetivarPedido")){
            Pedido pedido = new Pedido();
            PedidoNegocio negocio = new PedidoNegocio();
            pedido = negocio.buscaId(Integer.parseInt(request.getParameter("id")));
           
            request.setAttribute("pedido", pedido);            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_check.jsp");
            rd.forward(request, response);         
        }
                 
         //Ver Mais Pedido
         if(action.equals("VerMaisPedido")){
            int id = Integer.parseInt(request.getParameter("id"));
            Pedido pedido = new Pedido();
            PedidoNegocio negocio = new PedidoNegocio();
            pedido = negocio.buscaId(id);
            
            request.setAttribute("pedido", pedido); 
            
            HttpSession session = request.getSession();
            int tipo = (Integer) session.getAttribute("tipo");
            if(tipo == 0){
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_more.jsp");
                rd.forward(request, response);
            }else{
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_more_admin.jsp");
                rd.forward(request, response);
            }           
        }
         
         //Cancelar Pedido
         if(action.equals("CancelarPedido")){
            PedidoNegocio negocio = new PedidoNegocio();
            negocio.cancelar(Integer.parseInt(request.getParameter("id")));
            request.setAttribute("msg", "Pedido Cancelado com sucesso!");
            
            List<Pedido> lista = negocio.listar(null);
            request.setAttribute("listaPedido", lista);
            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_view.jsp");
            rd.forward(request, response);         
        }

         //Cadastrar Conserto
         if(action.equals("CadastrarConserto")){
            Pedido pedido = new Pedido(Integer.parseInt(request.getParameter("id")));
            Conserto conserto = new Conserto();
            ConsertoNegocio negocio = new ConsertoNegocio();
            PedidoNegocio negocioPed = new PedidoNegocio();
            
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            Date dataE = new Date();
            String dataEn = formatter.format(dataE);
            Date dataEntrega = (Date)formatter.parse(dataEn);
            
            conserto.setPedido(pedido);
            conserto.setObs(request.getParameter("obs"));
            conserto.setDataEntrega(dataEntrega);
            try{
                int idConserto = negocio.salvar(conserto);
                conserto.setIdConserto(idConserto);
                negocio.enviarEmail(conserto);
                negocioPed.efetivar(Integer.parseInt(request.getParameter("id")));
                request.setAttribute("msg", "Conserto efetivado com sucesso!\nUm email de aviso foi enviado ao cliente.");

                List<Pedido> lista = negocioPed.listar(null);
                request.setAttribute("listaPedido", lista);
                
                }catch(Exception ex){
                    request.setAttribute("msg", "Ocorreu algum erro no sistema, se o erro persistir entre em contato com o administrador!");                    
                }                 
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_view.jsp");
            rd.forward(request, response);         
        }
        
         
        //Pagamento
        if(action.equals("Pagamento")){
            try{
                ConsertoNegocio negocio = new ConsertoNegocio();
                negocio.pagar(Integer.parseInt(request.getParameter("conserto")));
                request.setAttribute("msg", "Pagamento de conserto efetivado com sucesso!");
                
                List<Conserto> lista = negocio.listaCombo();
                request.setAttribute("listaConserto", lista);

                }catch(Exception ex){
                    request.setAttribute("msg", "Ocorreu algum erro no sistema, se o erro persistir entre em contato com o administrador!");                    
                }    
            
            HttpSession session = request.getSession();
            int tipo = (Integer) session.getAttribute("tipo");
            if(tipo == 0){
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/pagamento.jsp");
                rd.forward(request, response);
            }else{
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/pagamento_admin.jsp");
                rd.forward(request, response);
            }  
        }
        
        //Combo Pagamento
        if(action.equals("ComboPagamento")){
            ConsertoNegocio negocio = new ConsertoNegocio();
            List<Conserto> lista = negocio.listaCombo();
            
            request.setAttribute("listaConserto", lista);
            
            HttpSession session = request.getSession();
            int tipo = (Integer) session.getAttribute("tipo");
            if(tipo == 0){
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/pagamento.jsp");
                rd.forward(request, response);
            }else{
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/pagamento_admin.jsp");
                rd.forward(request, response);
            }          
        }
        
        //Combo Pedido
        if(action.equals("ComboCadastrarPedido")){
            TipoProdutoNegocio negocio = new TipoProdutoNegocio();
            List<TipoProduto> lista = negocio.listar();
            request.setAttribute("listaTipoProduto", lista);
            
            ClienteNegocio negocioc = new ClienteNegocio();
            List<Cliente> listac = negocioc.listarCombo();
            request.setAttribute("listaCliente", listac);
            
            Date dataAtual = new Date();
            request.setAttribute("dataAtual", dataAtual);
            
            GregorianCalendar gc = new GregorianCalendar();
            gc.add(gc.DAY_OF_MONTH, 5);
            request.setAttribute("dataEntrega", gc.getTime());
            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_new.jsp");
            rd.forward(request, response);
        }
        
        //Monta Lista Home
        if(action.equals("MontaLista")){
            PedidoNegocio negocio = new PedidoNegocio();
            List<Integer> lista = negocio.montaLista();
            
            request.setAttribute("atraso", lista.get(0));
            request.setAttribute("aberto", lista.get(1));
            request.setAttribute("abertoHoje", lista.get(2));
            request.setAttribute("efetivado", lista.get(3));
            
            Date dataAtual = new Date();
            request.setAttribute("dataAtual", dataAtual);
            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/index_admin.jsp");
            rd.forward(request, response);
        }
        
        if(action.equals("ConsertosAtraso")){
            PedidoNegocio negocio = new PedidoNegocio();
            List<Pedido> lista = negocio.listaAtraso();            
            request.setAttribute("listaPedido", lista);
            
            Date dataAtual = new Date();
            request.setAttribute("dataAtual", dataAtual);
            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/conserto_em_atraso.jsp");
            rd.forward(request, response);
        }
               
        if(action.equals("ConsertosAbertoHoje")){
            PedidoNegocio negocio = new PedidoNegocio();
            List<Pedido> lista = negocio.listaAbertoHoje();            
            request.setAttribute("listaPedido", lista);
            
            Date dataAtual = new Date();
            request.setAttribute("dataAtual", dataAtual);
            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/pedido_aberto_hoje.jsp");
            rd.forward(request, response);
        }

        if(action.equals("ConsertosEfetivado")){
            ConsertoNegocio negocio = new ConsertoNegocio();
            List<Conserto> lista = negocio.listaEfetivado();            
            request.setAttribute("listaConserto", lista);
            
            Date dataAtual = new Date();
            request.setAttribute("dataAtual", dataAtual);
            
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/conserto_feito_hoje.jsp");
            rd.forward(request, response);
        }        
        
        //Gerar relatório
        if(action.equals("GerarRelatorio")){
        String tipoRel = request.getParameter("tipo");
        //cria uma conexão
        Connection con = ConnectionFactory.getConnection();
        //caminho do arquivo .jasper
        String jasper = request.getContextPath() + tipoRel;
        //URL do Host em que a servlet esta executando
        String host = "http://" + request.getServerName() + ":" + request.getServerPort();
        //URL do Relatório
        URL jasperURL = new URL(host + jasper);
        //Parâmetros
        HashMap params = new HashMap();
        if (tipoRel.equals("/efetivados.jasper")){
            
            String data_i = request.getParameter("data_i");
            String data_f = request.getParameter("data_f");
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
            Date dataI = (Date)formatter.parse(data_i); 
            Date dataF = (Date)formatter.parse(data_f); 
            
            params.put("dataI", dataI );
            params.put("dataF", dataF );
        }        
        byte[] bytes = JasperRunManager.runReportToPdf(jasperURL.openStream(), params, con);
        try{
            if(bytes != null){
                // seta a pagina para ser mostrada em pdf
                response.setContentType("application/pdf");
                //
                response.setHeader("Content-Disposition", "attachment; filename=Relatorio.pdf");  
                //envia o pdf para o cliente
                OutputStream ops = null;
                ops = response.getOutputStream();
                ops.write(bytes);
            }
        }catch(Exception e){
            request.setAttribute("msg", "Erro no Relatório!");                    
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/index_admin.jsp");
            rd.forward(request, response);
        }finally{
            if(con!=null){
                try{
                    con.close();
                }catch(Exception e){
                    request.setAttribute("msg", "Erro Fechando a conexão!");                    
                    RequestDispatcher rd = getServletContext().getRequestDispatcher("/index_admin.jsp");
                    rd.forward(request, response);
                }
            }
        }
    }
    }    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (Exception ex) {
            Logger.getLogger(Controladora.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (Exception ex) {
            Logger.getLogger(Controladora.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
